LW2000

 

Nombre:         VirusScan

Versión:         4.0.3

Editor:         McAfee

Víctima:         NAVW32.EXE

Herramientas:         W32Dasm v8.93

                            HIEW v6.16

                            Cerebro

Cracker:               LW2000

Tutorial:                número 15

URL:                     ftp://ftp.nai.com/pub/antivirus/win95/

 

Renuncia: Este tutorial tiene una finalidad únicamente educativa. No asumo ninguna responsabilidad por el mal uso de éste material.

 

1.     McAfee AntiVirus no tiene opción de introducir ningún tipo de Registration Code, pero vemos que en la ‘About’ box se nos dice: “About McAfee VirusScan Evaluation Copy.”

2.     Anotamos éste texto. Cargamos W32Dasm con VirusScan y vamos a las String Data References. Hacemos doble click en “About McAfee VirusScan Evaluation Copy” y cerramos la ventana SDR:

 

* Possible Reference to Dialog: DialogID_0067, CONTROL_ID:0452,

"McAfee VirusScan"

|

:004014CD 6852040000       push 00000452

:004014D2 55                   push ebp

:004014D3 FFD6              call esi

:004014D5 50                   push eax

:004014D6 FFD7              call edi

:004014D8 8D842470010000    lea eax, dword ptr [esp+00000170]

:004014DF 6804010000       push 00000104

:004014E4 50                   push eax

:004014E5 E8F6E30000       call 0040F8E0

:004014EA 83C408                  add esp, 00000008

:004014ED 85C0              test eax, eax

:004014EF 7411              je 00401502       >Primera comprobación

:004014F1 8D4C246C          lea ecx, dword ptr [esp+6C]

:004014F5 6804010000       push 00000104

:004014FA 51                   push ecx

 

* Possible Reference to String Resource ID=40120:

"About McAfee VirusScan OEM Edition"

|

:004014FB 68B89C0000       push 00009CB8

:00401500 EB27              jmp 00401529

 

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004014EF(C)

|

:00401502 8B842488040000    mov eax, dword ptr [esp+00000488]

:00401509 6804010000       push 00000104

:0040150E 83F801                  cmp eax, 00000001

:00401511 750C              jne 0040151F         >Salta a Evaluation

>Version

:00401513 8D542470          lea edx, dword ptr [esp+70]

:00401517 52                   push edx

 

* Possible Reference to String Resource ID=40102: "About McAfee VirusScan"

|

:00401518 68A69C0000       push 00009CA6

:0040151D EB0A              jmp 00401529

 

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00401511(C)

|

:0040151F 8D442470 lea             eax, dword ptr [esp+70]

:00401523 50                   push eax

 

* Possible Reference to String Resource ID=40103:

"About McAfee VirusScan Evaluation Copy"

 

3.     En la dirección ‘004014EF’ podemos ver una primera comprobación. Si ésta comprobación falla, nuestra ‘criaturita’ salta a la versión OEM. ¡Hey, no queremos que suceda eso! ¡Vamos a corregirlo! Creo que usted sabrá cómo hacerlo … (Anotamos el offset, arrancamos HIEW, vamos al offset, cambiamos el ‘JE ‘ a ‘JMP’, guardamos …)

4.     Pero, todavía tenemos una segunda comprobación en la línea ‘00401511’. ¡Vamos a corregirla también! ¡La ponemos a NOP! (Anotamos el offset, arrancamos HIEW, vamos al offset, cambiamos el ‘750C’ a ‘9090’, guardamos …)

5.     Parece que funciona correctamente, pero después de los 30 días de prueba nuestra ‘criaturita’ muestra un mensaje de deja de ejecutarse.

6.     Anotamos el mensaje y hacemos click en la ventana SDR. Hacemos doble click en nuestro mensaje y cerramos la ventana SDR. Esto es lo que nos encontraremos:

 

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0040F55F(C)

|

 

* Possible StringData Ref from Data Obj ->"ECLicenseFunction"

|

:0040F56E 68C4794300       push 004379C4

:0040F573 53                   push ebx

 

* Reference To: KERNEL32.GetProcAddress, Ord:0116h

|

:0040F574 FF1578E84300             Call dword ptr [0043E878]

:0040F57A 8BD8              mov ebx, eax

:0040F57C 85DB              test ebx, ebx

:0040F57E 0F84BE000000             je 0040F642

:0040F584 E8B7020000       call 0040F840

:0040F589 85C0              test eax, eax

:0040F58B 7510              jne 0040F59D

:0040F58D 8B842428020000    mov eax, dword ptr [esp+00000228]

:0040F594 85C0              test eax, eax

 

* Possible Reference to String Resource ID=00002: "In Folder"

|

:0040F596 B802000000       mov eax, 00000002

:0040F59B 7405              je 0040F5A2

 

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0040F58B(C)

|

* Possible Reference to String Resource ID=00005: "&Clean File"

|

:0040F59D B805000000       mov eax, 00000005

 

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0040F59B(C)

|

:0040F5A2 8D4C2470          lea ecx, dword ptr [esp+70]

:0040F5A6 8D542418          lea edx, dword ptr [esp+18]

:0040F5AA 51                   push ecx

:0040F5AB 52                   push edx

:0040F5AC 8D8C2488000000    lea ecx, dword ptr [esp+00000088]

:0040F5B3 6814BF4300       push 0043BF14

:0040F5B8 51                   push ecx

:0040F5B9 56                   push esi

:0040F5BA 50                   push eax

:0040F5BB FFD3              call ebx

:0040F5BD 8B44242C          mov eax, dword ptr [esp+2C]

:0040F5C1 83C418                  add esp, 00000018

:0040F5C4 85C0              test eax, eax

:0040F5C6 7410              je 0040F5D8                                                           

:0040F5C8 837C247803       cmp dword ptr [esp+78], 00000003

:0040F5CD 7509              jne 0040F5D8                                                        

 

* Possible Reference to String Resource ID=00100: "YES"

|

:0040F5CF C7400864000000    mov [eax+08], 00000064

:0040F5D6 EB6A              jmp 0040F642

 

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:0040F5C6(C), :0040F5CD(C)

|

:0040F5D8 837C247001       cmp dword ptr [esp+70], 00000001

:0040F5DD 7563              jne 0040F642

:0040F5DF 8D942420010000    lea edx, dword ptr [esp+00000120]

:0040F5E6 6800010000       push 00000100

:0040F5EB 52                   push edx

 

* Possible Reference to String Resource ID=03145:

"The program license has expired. You must purchase to conti"

 

7.     Nos desplazamos hacia arriba para ver desde donde se llama al mensaje y vemos dos referencias. Dos saltos; el primero en ‘0040F5C6’ y el segundo en ‘0040F5CD’. Después vemos ‘0040F5D6 JMP 0040F642’ que es el salto al arranque del programa. Desde aquí se salta al trozo de código que hace aparecer la messageBox. En ‘0040F58B’ hay otra comprobación. Aquí pondremos el salto al arranque del programa (‘JMP 0040F642’). Haciendo esto nos cargamos la messageBox y nuestra ‘criaturita’ puede ser usada más allá del ‘Trial Time’.

 

¡Enhorabuena! ¡Ya es un usuario registrado!

 

¡Se acabó! Fácil, ¿no? ¿Algún comentario? Envíeme un email a LW2000@gmx.net. o vaya a http://www.LW2000.cjb.net

 

Gracias a tKC por sus tutoriales. Empecé leyendo su primer tutorial y todavía sigo leyéndolos.

 

Traducción de: MeGaBiTe